import { IPSDELogicLinkBase } from './ipsdelogic-link-base';
import { IPSDEMSLogicLinkGroupCond } from './ipsdemslogic-link-group-cond';
import { IPSDEMSLogicNode } from './ipsdemslogic-node';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEMSLogicLink
 */
export interface IPSDEMSLogicLink extends IPSDELogicLinkBase {
  /**
   * 目标主状态节点对象
   *
   * @type {IPSDEMSLogicNode}
   */
  getDstPSDEMSLogicNode(): IPSDEMSLogicNode | null;

  /**
   * 目标主状态节点对象
   *
   * @type {IPSDEMSLogicNode}
   */
  get dstPSDEMSLogicNode(): IPSDEMSLogicNode | null;

  /**
   * 目标主状态节点对象（必须存在）
   *
   * @type {IPSDEMSLogicNode}
   */
  getDstPSDEMSLogicNodeMust(): IPSDEMSLogicNode;

  /**
   * 连接条件对象
   *
   * @type {IPSDEMSLogicLinkGroupCond}
   */
  getPSDEMSLogicLinkGroupCond(): IPSDEMSLogicLinkGroupCond | null;

  /**
   * 连接条件对象
   *
   * @type {IPSDEMSLogicLinkGroupCond}
   */
  get psDEMSLogicLinkGroupCond(): IPSDEMSLogicLinkGroupCond | null;

  /**
   * 连接条件对象（必须存在）
   *
   * @type {IPSDEMSLogicLinkGroupCond}
   */
  getPSDEMSLogicLinkGroupCondMust(): IPSDEMSLogicLinkGroupCond;

  /**
   * 源主状态节点对象
   *
   * @type {IPSDEMSLogicNode}
   */
  getSrcPSDEMSLogicNode(): IPSDEMSLogicNode | null;

  /**
   * 源主状态节点对象
   *
   * @type {IPSDEMSLogicNode}
   */
  get srcPSDEMSLogicNode(): IPSDEMSLogicNode | null;

  /**
   * 源主状态节点对象（必须存在）
   *
   * @type {IPSDEMSLogicNode}
   */
  getSrcPSDEMSLogicNodeMust(): IPSDEMSLogicNode;

  /**
   * 默认连接
   * @type {boolean}
   * @default false
   */
  defaultLink: boolean;
}
